package com.hare.system_server.controller;



import com.hare.auth.utils.SecurityUtils;
import com.hare.common.result.R;
import com.hare.common.utils.PageUtils;
import com.hare.system_api.dto.SysUserDTO;
import com.hare.system_api.vo.SysUserSystemVO;
import com.hare.system_server.serice.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @program: Hare
 * @description: 用户相关Api
 * @author: Hare
 * @create: 2022-11-21 17:30
 * @Version 6.0.1
 **/
@RestController
@RequestMapping("/user")
public class SysUserController {

    @Autowired
    SysUserService sysUserService;


    /**
     * 用户管理==> 获取用户信息(分页)
     *
     * @param dto
     * @return
     */
    @PostMapping("/pageInfo")
    public R<PageUtils<SysUserSystemVO>> pageUserInfo(@RequestBody SysUserDTO dto) {
        return R.success(sysUserService.pageUserInfo(dto));
    }


    /**
     * 用户管理==> 添加 Or 修改用户信息
     *
     * @param dto 用户信息
     * @return
     */
    @PostMapping("/userSave")
    public R userInsertOrEdit(@RequestBody SysUserDTO dto) {
        return R.successOk(sysUserService.userInsertOrEdit(dto));
    }


    /**
     * 用户管理==> 重置密码
     *
     * @param pas 密码
     * @return
     */
    @GetMapping("/updatePassWord")
    public R updatePassWord(@RequestParam String pas, @RequestParam String id) {
        return R.successOk(sysUserService.updatePassWord(pas, id));
    }


    /**
     * 用户管理==> 根据用户id查询用户信息
     *
     * @param id 用户id
     * @return
     */
    @GetMapping(value = {"/selectUser/", "/selectUser/{id}"})
    public R<SysUserSystemVO> updatePassWord(@PathVariable(required = false) String id) {
        return R.success(sysUserService.selectUser(id));
    }


    /**
     * 用户管理==> 根据用户id删除用户信息
     *
     * @param dto 用户信息
     * @return
     */
    @PostMapping("/delUserInfo")
    public R delUserInfo(@RequestBody SysUserDTO dto) {
        String loginId = SecurityUtils.getAdmin().getId();
        if (loginId.equals(dto.getId())) {
            return R.error("正在登录中,无法删除");
        }
        return R.successOk(sysUserService.delUserInfo(dto));
    }


    /**
     * 用户管理==> 根据用户id修改状态
     *
     * @param dto 用户信息
     * @return
     */
    @PostMapping("/editUserStatus")
    public R editUserStatus(@RequestBody SysUserDTO dto) {
        sysUserService.checkUserAllowed(dto);
        return R.successOk(sysUserService.editUserStatus(dto));
    }
}
